#pragma once
#include <windows.h>
#include "StubInfo.h"
#include "AES.h"

#ifndef _WIN64

#define PEB_OFFSET  0x30
#define LDR_OFFSET  0x0C
#define LIST_OFFSET 0x1C
#define BASE_OFFSET 0x08
#define BUFF_OFFSET 0x20
#define NUM_OFFSET  0x0C

#else

#define PEB_OFFSET  0x60
#define LDR_OFFSET  0x18
#define LIST_OFFSET 0x30
#define BASE_OFFSET 0x10
#define BUFF_OFFSET 0x40
#define NUM_OFFSET  0x0C

#endif

typedef FARPROC* (WINAPI* FnGetProcAddress)(HMODULE hModule, LPCSTR lpProcName);
typedef HMODULE(WINAPI* FnLoadLibraryA)(LPCSTR lpLibFileName);
typedef BOOL(WINAPI* FnVirtualProtect)(LPVOID lpAddress, SIZE_T dwSize, DWORD flNewProtect, PDWORD lpflOldProtect);
typedef void (WINAPI* FnExitProcess)(UINT uExitCode);
typedef HMODULE(WINAPI* FnGetModuleHandleA)(LPCSTR lpModuleName);
typedef LPVOID(WINAPI* FnVirtualAlloc)(LPVOID lpAddress, SIZE_T dwSize, DWORD flAllocationType, DWORD flProtect);
typedef VOID(WINAPI* FnRtlMoveMemory)(VOID UNALIGNED* Destination, const VOID UNALIGNED* Source, SIZE_T Length);

typedef void(*JUMPTOOEP)();
